widget: Insist on widgets calling gtk_widget_set_has_window()
authorBenjamin Otte <otte@redhat.com>
Wed, 2 Nov 2016 05:51:59 +0000 (06:51 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 2 Nov 2016 05:54:57 +0000 (06:54 +0100)
This way, we can grep the code for the bad widgets that set this to
TRUE and fix them.

gtk/gtkwidget.c
gtk/gtkwidgetprivate.h

index f7879b688dd73ae31de80894ae62d79c6d878a2c..59ed2c12fe8b6d954700dabf89f6e41d8ccd83eb 100644 (file)
@@ -8168,6 +8168,7 @@ gtk_widget_set_has_window (GtkWidget *widget,
   g_return_if_fail (GTK_IS_WIDGET (widget));
 
   widget->priv->no_window = !has_window;
+  widget->priv->no_window_set = TRUE;
 }
 
 /**
@@ -10415,6 +10416,11 @@ gtk_widget_constructed (GObject *object)
     g_object_set_qdata (object, quark_widget_path, NULL);
 
   G_OBJECT_CLASS (gtk_widget_parent_class)->constructed (object);
+
+  if (!widget->priv->no_window_set)
+    {
+      g_warning ("%s does not call gtk_widget_set_has_window() in its init function", G_OBJECT_TYPE_NAME (widget));
+    }
 }
 
 static void
index 039dc1b076e1998f43e419c9dc3e627cffa32cba..816928118dce9a6c3908859e13b9b015d0629fd0 100644 (file)
@@ -53,6 +53,7 @@ struct _GtkWidgetPrivate
   guint toplevel              : 1;
   guint anchored              : 1;
   guint no_window             : 1;
+  guint no_window_set         : 1;
   guint realized              : 1;
   guint mapped                : 1;
   guint visible               : 1;